home *** CD-ROM | disk | FTP | other *** search
- property hiliteChan, selectChan, unselectedBitmap, lowestSprite, highestSprite, soundList, soundFlag, soundPath
-
- on birth me, low, high, preselected
- set lowestSprite to low
- set highestSprite to high
- set hiliteChan to 0
- set selectChan to low + preselected - 1
- set unselectedBitmap to the castNum of sprite selectChan - 2
- repeat with chan = lowestSprite to highestSprite
- puppetSprite(chan, 1)
- end repeat
- set soundPath to EMPTY
- set soundList to []
- set soundFlag to 0
- return me
- end
-
- on update me
- doRollovers(me)
- end
-
- on doRollovers me
- if hiliteChan <> 0 then
- if not rollOver(hiliteChan) then
- unhiliteSprite(me, hiliteChan)
- set spriteNum to whichRoll(me)
- if spriteNum = 0 then
- set hiliteChan to 0
- else
- hiliteSprite(me, spriteNum)
- ROsound(me, spriteNum)
- end if
- end if
- else
- set spriteNum to whichRoll(me)
- if spriteNum <> 0 then
- hiliteSprite(me, spriteNum)
- ROsound(me, spriteNum)
- end if
- end if
- end
-
- on ROsound me, whichSprite
- if (whichSprite <> selectChan) and soundFlag then
- set soundName to getAt(soundList, whichSprite - lowestSprite + 1)
- if soundPath <> EMPTY then
- sound playFile 1, soundPath & soundName
- else
- puppetSound(soundName)
- end if
- updateStage()
- repeat while soundBusy(1)
- end repeat
- puppetSound(0)
- if not rollOver(whichSprite) then
- unhiliteSprite(me, hiliteChan)
- set hiliteChan to 0
- end if
- end if
- end
-
- on select me
- if selectChan <> the clickOn then
- if selectChan <> 0 then
- deselect(me, selectChan)
- end if
- set selectChan to the clickOn
- if selectChan = hiliteChan then
- set unselectedBitmap to the castNum of sprite selectChan - 1
- else
- set unselectedBitmap to the castNum of sprite selectChan
- end if
- set hiliteChan to 0
- set the castNum of sprite selectChan to unselectedBitmap + 2
- return 1
- else
- return 0
- end if
- end
-
- on deselect me, whichSprite
- set the castNum of sprite whichSprite to unselectedBitmap
- end
-
- on hiliteSprite me, whichSprite
- if whichSprite <> selectChan then
- set the castNum of sprite whichSprite to the castNum of sprite whichSprite + 1
- set hiliteChan to whichSprite
- else
- set hiliteChan to 0
- end if
- end
-
- on unhiliteSprite me, whichSprite
- if whichSprite <> selectChan then
- set the castNum of sprite whichSprite to the castNum of sprite whichSprite - 1
- end if
- end
-
- on whichRoll me
- repeat with rollSprite = lowestSprite to highestSprite
- if rollOver(rollSprite) then
- exit repeat
- end if
- end repeat
- if rollSprite > highestSprite then
- return 0
- exit
- else
- return rollSprite
- end if
- end
-